package br.com.conhecimento.ejb.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import br.com.conhecimento.core.data.GestaoTipoUsuarioDao;
import br.com.conhecimento.core.model.GestaoTipoUsuario;
import br.com.conhecimento.ejb.client.vo.funcionalidade.ConsultaTipoUsuarioVO;
import br.com.conhecimento.ejb.client.vo.modelo.TipoUsuarioVO;
import br.com.conhecimento.ejb.server.util.Utils;

@Service
@Transactional
public class TipoUsuarioService {

	@Autowired
	private GestaoTipoUsuarioDao gestaoTipoUsuarioDao;

	@Autowired
	private JavaMailSender mailSender;

	@Autowired
	private SimpleMailMessage alertMailMessage;

	public ConsultaTipoUsuarioVO consultarTipoUsuarios(
			ConsultaTipoUsuarioVO consultaTipoUsuarioVO) {

		ConsultaTipoUsuarioVO consulta = new ConsultaTipoUsuarioVO();

		try {
			List<GestaoTipoUsuario> tiposUsuario = gestaoTipoUsuarioDao
					.getTipoUsuario(consultaTipoUsuarioVO.getId(),
							consultaTipoUsuarioVO.getDescricao());

			if (tiposUsuario == null) {
				consulta.setStatus(ConsultaTipoUsuarioVO.StatusConsultaTipoUsuarioEnum.ERRO);
				return consulta;
			}

			if (tiposUsuario.isEmpty()) {
				consulta.setStatus(ConsultaTipoUsuarioVO.StatusConsultaTipoUsuarioEnum.NAO_POSSUI_REGISTROS);
				return consulta;
			}

			for (GestaoTipoUsuario p : tiposUsuario) {
				TipoUsuarioVO tipo = new TipoUsuarioVO();
				tipo.setId(p.getId());
				tipo.setDescricao(p.getDescricao());
				tipo.setAtivo(p.getAtivo());

				consulta.getTipoUsuarios().add(tipo);
			}

		} catch (Exception e) {
			Utils.sendMailException(alertMailMessage, mailSender,
					"ERRO AO CONSULTAR COMBO DE PRIORIDADES", e);
		}

		consulta.setStatus(ConsultaTipoUsuarioVO.StatusConsultaTipoUsuarioEnum.SUCESSO);
		return consulta;

	}
}
